library(dplyr)
df_1 <- data.frame(
x = c(1, 2, 3),
y = c(4, 5, 6))
df_1 %>%
mutate(promedio_xy = mean(c(x, y))) x y promedio_xy
1 1 4 3.5
2 2 5 3.5
3 3 6 3.5
Clase 26- rowwise
Conocer cómo realizar operaciones fila a fila al mismo tiempo.
Realizar conexiones de lectura y escritura a bases de datos.
rowwise()Operaciones complejas por fila: realizar cálculos o transformaciones específicas para cada fila, como aplicar una función personalizada o acceder a múltiples columnas dentro de la misma fila.
Funciones que dependen de múltiples columnas: Si la operación requiere información de varias columnas en la misma fila.
Ejemplo 1: Calcular el promedio de una columna basado en otro valor de la misma fila
library(dplyr)
df_1 <- data.frame(
x = c(1, 2, 3),
y = c(4, 5, 6))
df_1 %>%
mutate(promedio_xy = mean(c(x, y))) x y promedio_xy
1 1 4 3.5
2 2 5 3.5
3 3 6 3.5
df_1 %>%
rowwise() %>%
mutate(promedio_xy = mean(c(x, y)))# A tibble: 3 × 3
# Rowwise:
x y promedio_xy
<dbl> <dbl> <dbl>
1 1 4 2.5
2 2 5 3.5
3 3 6 4.5
Ejemplo 2: calcular ratio por fila
# Crear un tibble
datos <- tribble(
~id, ~valor1, ~valor2,
"A", 10, 5,
"B", 40, 3,
"C", 9, 7
)
datos# A tibble: 3 × 3
id valor1 valor2
<chr> <dbl> <dbl>
1 A 10 5
2 B 40 3
3 C 9 7
# Crear una función
mi_funcion <- function(x, y) {
sum(x, y)*mean(c(x,y))
}
mi_funcion(5,3)[1] 32
# Sin rowwise aplicar la función personalizada
datos %>%
mutate(resultado = mi_funcion(valor1, valor2))# A tibble: 3 × 4
id valor1 valor2 resultado
<chr> <dbl> <dbl> <dbl>
1 A 10 5 913.
2 B 40 3 913.
3 C 9 7 913.
# Usar rowwise para aplicar la función
datos %>%
rowwise() %>%
mutate(resultado = mi_funcion(valor1, valor2))# A tibble: 3 × 4
# Rowwise:
id valor1 valor2 resultado
<chr> <dbl> <dbl> <dbl>
1 A 10 5 112.
2 B 40 3 924.
3 C 9 7 128
rowwise()